/*
 * 定义商品相关的API接口函数
 *
 */

import request from '@/utils/request'
import { GET, POST } from '@/constant'

let API = {
  /**
   * 获取商品详情
   * @param id 商品的id
   * @return {*|AxiosPromise}
   */
  getGoodsInfo(id) {
    return request('/goods', GET, { id })
  },
  /**
   * 获取相关推荐 | 猜你喜欢
   * @param id    商品的id, 传入相关推荐, 不传猜你喜欢
   * @param limit 商品的数量
   * @return {*|AxiosPromise}
   */
  getRelevantGoods({
    id,
    limit = 16  // 如果不使用对象模式的参数, 第一个参数必须是id,
  }) {
    return request('/goods/relevant', GET, {
      id,
      limit
    })
  },

  /**
   * 获取热榜推荐
   * @param id      商品Id
   * @param limit   数量限制
   * @param type    惹下类型, 1为24小时, 2为周榜, 3为总榜, 默认为1
   */
  getHotGoods(id, limit = 3, type = 1) {
    return request('/goods/hot', GET, {
      id,
      limit,
      type
    })
  },
  /**
   * 获取商品的评价统计信息
   * @param id 商品Id
   * @return {*|AxiosPromise}
   */
  getGoodsCommentInfo(id) {
    // return request(`/goods/${id}/evaluate`, GET)
    // 当axios遇到一个以http开头的地址, 它就不会加上基准baseUrl了
    return request(`https://mock.boxuegu.com/mock/1175/goods/${id}/evaluate`, GET)
  },
  /**
   * 获取商品的评价列表
   * @param id 商品Id
   * @param params 筛选条件, 调用方法会传过来一个对象, 所以这里不用使用 {params} 形式了
   * @return {*|AxiosPromise}
   */
  getGoodsCommentList(id, params) {
    // return request(`/goods/${id}/evaluate`, GET)
    // 当axios遇到一个以http开头的地址, 它就不会加上基准baseUrl了
    return request(`https://mock.boxuegu.com/mock/1175/goods/${id}/evaluate/page`, GET, params)
  },
  /**
   * 商品搜索
   * @param params 参数对象
   */
  searchGoods(params) {
    return request('/search/all', POST, params)
  }
}

export default API
